package interview.demo1;

/**
 * 选择排序：
 * 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素，
 * 存放在序列的起始(末尾)位置，直到全部待排序的数据元素排完
 *
 * @author
 * @create 2018-10-12 12:26
 **/
public class SelectSore {


    public static void main(String[] args) {

        int[] array = {10, 9, 8, 7};


        array = SelectSore(array);
        System.out.println("排序后的数组为：");
        for (int a : array) {
            System.out.print(a);
        }

    }

    /**
     * 原生的选择排序： 让第一个数默认为最大的数的小标，然后去比较每个数，当大于这个数的时候，则将最大数的数组下标设置为pos，这样一趟
     *                  比较下来的话，我们就可以得出第一趟数组中最大的数的数组下标在哪里，然后我们再将这个最大的数与数组的最后一个
     *                  位置交换即可满足要求，依次类推下去
     *
     * @return
     */
    public static int[] SelectSore(int[] array) {

        //数组中的最大数组角标
        int max = 0;
        int temp = 0;

        //比较的趟数
        for (int i = 0; i < array.length - 1; i++) {

            for (int j = 0; j < array.length  - i; j++) {
                //初始化的时候,默认pos为第一个元素，则让每个元素都比较pos，然后最大的设置为pos，则得出最大的值的坐标
                if (array[j] > array[max]) {
                    //将最大元素存放的下标放入pos中
                    max = j;
                }
            }
            //将得出的pos与最后的位置进行交换
            temp = array[array.length - 1 - i];
            array[array.length - 1 - i] = array[max];
            array[max] = temp;
        }


        return array;

    }
}
